package view;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import components.MyInternalFrame;

import model.Cidade;

import dao.DAOFactory;
import dao.ICidadeDAO;

import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.util.List;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class ConsultaCidadeView extends MyInternalFrame {

	private JPanel contentPane;
	private JTextField textNome;
	private JTable table;
	private JComboBox cbEstado;
	private JButton btnBuscar;
	
//	/**
//	 * Launch the application.
//	 */
//	public static void main(String[] args) {
//		EventQueue.invokeLater(new Runnable() {
//			public void run() {
//				try {
//					ConsultaCidadeView frame = new ConsultaCidadeView();
//					frame.setVisible(true);
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//			}
//		});
//	}

	/**
	 * Create the frame.
	 */
	public ConsultaCidadeView(final MenuPrincipalN1 tp, final int proximaAcao) {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 64, 414, 187);
		contentPane.add(scrollPane);
		
		table = new JTable();
		table.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				//System.out.print("fazer chover");
				
				CidadeView d = new CidadeView(proximaAcao);
				d.setVisible(true);
				tp.desktop.add(d);
		        try {
		        	d.setSelected(true);
		        } catch (java.beans.PropertyVetoException ep) {
		        	ep.printStackTrace();
		        }
				
		        int row = table.getSelectedRow();
				DefaultTableModel dtm;
				dtm = (DefaultTableModel) table.getModel();
				
				Cidade c = new Cidade();
				c.setIdCidade(
						Integer.parseInt(
								dtm.getValueAt(row, 0).toString() ) );
				c.setNmCidade( dtm.getValueAt(row, 1).toString() );
				c.setSgEstado( dtm.getValueAt(row, 2).toString() );
		        
		        d.setCidade( c );
		        setVisible(false);
			}
		});
		
		
		
		table.setModel(new DefaultTableModel(
			new Object[][] {
					//new Object[]{ 1, "Floripa", "SC" }
			},
			new String[] {
				"C\u00F3digo", "Nome", "Estado"
			}
			
		) {
			@Override
			public boolean isCellEditable(int row, int column) {
				return false;
			}
			
		} );
		
		table.getTableHeader().setReorderingAllowed(false);
		
		scrollPane.setViewportView(table);
		
		JLabel lblNome = new JLabel("Nome:");
		lblNome.setBounds(10, 11, 46, 14);
		contentPane.add(lblNome);
		
		textNome = new JTextField();
		textNome.setBounds(73, 8, 171, 20);
		contentPane.add(textNome);
		textNome.setColumns(10);
		
		JLabel lblEstado = new JLabel("Estado:");
		lblEstado.setBounds(10, 36, 46, 14);
		contentPane.add(lblEstado);
		
		//cbEstado = new JComboBox(DAOFactory.getCidadeDAO().findAllEstados().toArray() );
		cbEstado = new JComboBox();
		cbEstado.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				String criterio = null;
				criterio = (String) cbEstado.getSelectedItem();

				Cidade c = new Cidade();
				if ( criterio.equals("Todos") ) {
					c.setSgEstado(null);
				} else {
					c.setSgEstado( criterio );
				}
				ICidadeDAO dao = DAOFactory.getCidadeDAO();
				List<Cidade> cidades = 
						dao.findCidadeBySgEstado(c);
				DefaultTableModel dtm = null;
				
				dtm = (DefaultTableModel) table.getModel();
				
				//limpar os dados da JTable
				dtm.setRowCount(0);
				
				for (Cidade cidade : cidades) {
					
					dtm.addRow( new Object[] {
						cidade.getIdCidade(),
						cidade.getNmCidade(),
						cidade.getSgEstado()
					} );
					
				}
			}
		});
		cbEstado.addItem("Todos");
		for (String estado: DAOFactory.getCidadeDAO().findAllEstados() ) {
			cbEstado.addItem( estado );
		}
		
		cbEstado.setBounds(73, 33, 171, 20);
		contentPane.add(cbEstado);
		
		btnBuscar = new JButton("Buscar");
		btnBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Cidade c = new Cidade();
				c.setNmCidade( textNome.getText() );
				
				ICidadeDAO dao = DAOFactory.getCidadeDAO();
				List<Cidade> cidades = 
						dao.findCidadeByName(c);
				DefaultTableModel dtm = null;
				
				dtm = (DefaultTableModel) table.getModel();
				
				//limpar os dados da JTable
				dtm.setRowCount(0);
				
				for (Cidade cidade : cidades) {
					
					dtm.addRow( new Object[] {
						cidade.getIdCidade(),
						cidade.getNmCidade(),
						cidade.getSgEstado()
					} );
					
				}
			}
		});
		btnBuscar.setBounds(287, 32, 89, 23);
		contentPane.add(btnBuscar);
		
		//table.getTableHeader()
		
		JButton btnTrocar = new JButton("trocar");
		btnTrocar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				table.setModel(new DefaultTableModel(
						new Object[][] {
								new Object[]{ 1, "Floripa", "SC" }
						},
						new String[] {
							"Algo", "outro", "Mais 1","teste"
						}
						
					) {
						@Override
						public boolean isCellEditable(int row, int column) {
							return false;
						}
						
					} );
				table.repaint();
			}
		});
		btnTrocar.setBounds(287, 7, 89, 23);
		contentPane.add(btnTrocar);
	}
}
